package cn.tedu.springdemo.day01;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 创建对象测试（两种)
 */
public class Test01 {
    /**
     * 第一种传统的创建对象方式---Person对象
     */
    @Test
    public void test01(){
        Person p=new Person();
        p.sleep();
        p.say();
    }
    /**
     * 第一种Spring创建对象的方式---Person对象
     */
    @Test
    public void test_Spring_IOC(){
        //1.创建Spring容器--->解析：applicationcontext.xml
        //Spring容器:把person类放入到Springing容器中---applicationContext.xml
        //创建applicationContext.xml过程
        //第一步：点SpringDemo右键--->New
        //第二步：XML configuration File--->(Spring包导入）-->Spring config
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        //ApplicationContext 抽象类 创建抽象类
        //JavaOOP面向对象-----多态  父类 引用 =new 子类
        //2.获取bean文件-----从Spring容器，创建对象
        //getBean("applicationContext.xml-->id名"） 获取对象，返回object
        Person p=(Person)ac.getBean("person");
        //多态；向上造型 子类 运用=（子类） 父类;
        //3.关闭容器
        p.say();p.sleep();
        ((ClassPathXmlApplicationContext)ac).close();

    }
    @Test
    public void test03(){
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Person p1=(Person)ac.getBean("person");
        System.out.println(p1);
        Person p2=(Person)ac.getBean("person");
        System.out.println(p2);
        ((ClassPathXmlApplicationContext)ac).close();
    }
    @Test
    public void test04(){
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext2.xml");

    }
    @Test
    public void test05(){
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext3.xml");
        Person p1=(Person)ac.getBean("person1");
        System.out.println(p1);
        Person p2=(Person)ac.getBean("person2");
        System.out.println(p2);
        ((ClassPathXmlApplicationContext)ac).close();
    }
}
